//给你一个长度为 n 的整数数组 nums ，请你判断在 最多 改变 1 个元素的情况下，该数组能否变成一个非递减数列。 
//
// 我们是这样定义一个非递减数列的： 对于数组中任意的 i (0 <= i <= n-2)，总满足 nums[i] <= nums[i + 1]。 
//
// 
//
// 示例 1: 
//
// 
//输入: nums = [4,2,3]
//输出: true
//解释: 你可以通过把第一个 4 变成 1 来使得它成为一个非递减数列。
// 
//
// 示例 2: 
//
// 
//输入: nums = [4,2,1]
//输出: false
//解释: 你不能在只改变一个元素的情况下将其变为非递减数列。
// 
//
// 
//
// 提示： 
// 
//
// 
// n == nums.length 
// 1 <= n <= 10⁴ 
// -10⁵ <= nums[i] <= 10⁵ 
// 
// Related Topics 数组 👍 708 👎 0


package com.cjl.leetcode.editor.cn;

/**
 * [P665]_非递减数列
 *
 * @author cjl
 * @date 2022-11-23 20:36:42
 */
public class P665_NonDecreasingArray {
    public static void main(String[] args) {
        //测试代码
        Solution solution = new P665_NonDecreasingArray().new Solution();
    }

    //力扣代码
    //leetcode submit region begin(Prohibit modification and deletion)
    class Solution {
        /**
         * 最多有一个nums[i]>nums[i+1],多了就不可能转化位非递减数列
         * 转化后，还需要验证
         * @param nums
         * @return
         */
        public boolean checkPossibility(int[] nums) {
            int n = nums.length;
            int t = 0;
            int index = 0;
            for (int i= 1 ; i< n; i++){
                if(nums[i-1] > nums[i]){
                    index = i;
                    t++;
                }
            }
            if(t > 1){
                return false;
            }
            if(t ==0 ){
                return true;
            }
            if(index == 1  || index == n -1){
                return true;
            }
            if(nums[index - 2] <= nums[index] || nums[index -1] <= nums[index +1]){
                return true;
            }
            return false;

        }
    }
//leetcode submit region end(Prohibit modification and deletion)

}